iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Software Development

燃燒大三的成果發表系列 第 16

燃燒大三的成果發表第十六天 - map

  • 分享至 

  • xImage
  •  

今天要來介紹的是map的用法,這也是一個很棒的用法,我絕對不是什麼每個都會說很棒的人,娓娓聽我道來,真的很好用

我們在一開始的時候,會使用for迴圈一一將迭代資料取出,再組成我們想要的樣子

a = []
for i in range(0, 6):
    a.append(i*i)
print(a)
# [0, 1, 4, 9, 16, 25]

再認識推導式之後,我們會用一行推導式輕鬆解決

b = [i*i for i in range(0, 6)]
print(b)
# [0, 1, 4, 9, 16, 25]

照我上面的邏輯,知道有了map之後就該用map來操作了吧,Bingo答對了~~

def add(a, b):
    return a*b
print(map(add, (1,2)))
# <map object at 0x10dfaa8b0>
# map第一個參數是一個函數,第二個參數擺迭代的資料

可是每次都要另外宣告一個函數是有點麻煩,所以我們可以透過lambda匿名函數輕鬆解決,另外我們可以從上面的結果發現,map()回傳的是一個map的物件,我們可以加上list或set做轉換就可以看到完整資料的內容,並作利用

c = list(map(lambda a,b: a*b, (1,), (2, )))
print(c)  # [3]

這是一個簡單的示意,當然實際上還有很大的操作空間,只要不是一個巢狀的for迴圈,太困難的操作,都能夠透過map搭配lambda來寫,不過推導式也是有它的好處,推導式還可以在後面多加一個if判斷式,只能說視情況操作

明天我要來介紹一個跟map很像,但又不是完全一樣的用法,他叫「reduce & filter」


上一篇
燃燒大三的成果發表第十五天 - 其他用法(上)
下一篇
燃燒大三的成果發表第十七天 - 其他用法(下)
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言